home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d20 / yuck_200.arc / YUCK.DOC < prev    next >
Text File  |  1990-10-29  |  41KB  |  851 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                 Note: Formatted for 66 lines/page, 80 cols/line.
  8.  
  9.  
  10.  
  11.  
  12.  
  13.                           Yuck!  A Pointnet Converter
  14.  
  15.                      Yet-another Useless Conversion Kludge
  16.  
  17.  
  18.  
  19.  
  20.             Yuck! is a program designed to produce a FrontDoor- and Trap-
  21.        Door-compatible pointlist from the usual MakeNL fakenet format, or
  22.        from a FIDOUSER.LST-style file.  For example, all Austrian nodes
  23.        share a common pointlist which is generated by MakeNL and looks
  24.        approximately like this:
  25.  
  26.        Host,3000,<data for bossnode 310/3>
  27.        ,1,<data for 1st point of 310/3>
  28.        ,2,...
  29.        Host,3210,<data for 310/11>
  30.        ,1,<data for 310/11.1>
  31.  
  32.             Then, of course, there are the perverts among us who want to
  33.        use a list in the FIDOUSER.LST format:
  34.  
  35.        Kasza, Felix                                 310/11.1
  36.        Homrighausen, Jo                           3:632/308.3
  37.        Bonehead, Very hard                         7:48/20.1
  38.  
  39.             I guess you get the idea.  Now, FroDo doesn't exactly like
  40.        fake nets; it would prefer a pointlist like this:
  41.  
  42.        Zone,2,...
  43.        Host,310,...
  44.        ,3,<data for bossnode 310/3>
  45.        Point,1,<data for point #1>
  46.        Point,2,...
  47.        ,11,<data for 310/11>
  48.        Point,1,...
  49.  
  50.             There are, however, some who'd even want their FroDo to use
  51.        the all-new singing and dancing pointlist format:
  52.  
  53.        Boss,2:310/3
  54.        ,1,<data for point #1>
  55.        ,2,...
  56.        Boss,2:310/11
  57.        ,1,...
  58.  
  59.  
  60.  
  61.        Yuck! 2.00/a-1               02-10-90                       Page 2
  62.  
  63.             Then, there are those LoTek systems.  Fakenet addressing is a
  64.        thing from times long past, so why not provide them with the capa-
  65.        bility of using 4D-addressing when entering messages?  To cover
  66.        that, Yuck! provides a facility to output FIDOUSER.LST-style
  67.        files.  In that case, you must have an external sort program able
  68.        to process fixed-length, ASCII only input files; Ben Baker's QSORT
  69.        will do nicely (thanks, Ben).  In a pinch, even the DOS "SORT"
  70.        command will do.  The looks of the resulting file is approximately
  71.        like the following example (note: lines have been shortened to fit
  72.        the page):
  73.  
  74.        Blach, Johannes                            2:310/11.111
  75.        Homrighausen, Joaquim                      3:632/308
  76.        Janssens, Peter                            2:512/1
  77.        Kasza, Felix                                 2:2/3
  78.        Kasza, Felix                               2:310/11
  79.  
  80.             Well, you get the notion.  Now, as the sucker who has to
  81.        create the pointlist in our region, several things griped me.
  82.        First, I had to consider the few BinkleyTerm LoTek nodes, probably
  83.        leftovers from centuries long past.  Second, MakeNL provides a
  84.        great many features facilitating generation of a pointlist, but it
  85.        will definitely not deal with the (non-standard) "Point" keyword.
  86.        Third, I thought it ridiculous to generate a pointnet for every-
  87.        body else and then having to manually edit my own pointlist.
  88.  
  89.             Well, the result is Yuck!.  What Yuck! means is listed in the
  90.        title; the second meaning will be obvious when you look at the
  91.        source ...  yuck!
  92.  
  93.             WARNING:  Felix A. Kasza assumes no responsibility, nor lia-
  94.        bility, nor anything else, for direct or consequential or whatever
  95.        damages arising from looking at the source code to Yuck!.  This
  96.        includes, but is not limited to, soiled keyboards.
  97.  
  98.             What exactly does Yuck! do?  Well, first it reads its control
  99.        file.  In there, you probably have defined mappings which link a
  100.        pointnet number to a specific bossnode.  Then, it slurps the
  101.        entire pointlist (which, of course, is limited in size) and pro-
  102.        ceeds with killing all the entries which do not refer to a point.
  103.        The only ones left after that phase will be the node lines which
  104.        in reality are points.
  105.  
  106.             As it processes the pointlist, Yuck! remembers which fakenet
  107.        a certain point entry is associated with.  This is a necessity for
  108.        the next phase, during which the pointnet numbers are remapped to
  109.        full 4-dimensional addresses.
  110.  
  111.  
  112.  
  113.        Yuck! 2.00/a-1               02-10-90                       Page 3
  114.  
  115.             At this time, Yuck! will read in a FIDOUSER.LST-compatible
  116.        format file, if such a file has been defined in Yuck!'s control
  117.        file.  As this format does not nearly contain enough information
  118.        for a complete point entry, Yuck! fakes the missing information
  119.        (system name and location may be set in YUCK.CTL, baudrate and
  120.        flags are hardcoded to 2400,MO).  Entries which do not refer to a
  121.        point (i. e., have a point number of 0 or none at all) are dis-
  122.        carded during the scan of the input file.
  123.  
  124.             Finally, the result is sorted by Zone, Net, Node and Point,
  125.        and Yuck! starts to go over the resulting list in a sequential
  126.        manner.  After this step, the nodelist is opened, and Yuck! starts
  127.        to process it sequentially.  While doing that, it tracks the cur-
  128.        rent zone, region, host and node.  If a node's (or host's, or
  129.        region's, or zone's) entry is needed, it is output to the target
  130.        file, and the points off that system are searched in the internal,
  131.        pre-processed pointlist so as to write their data to the target
  132.        file, too.  In the case of a FIDOUSER.LST-compatible output file,
  133.        an additional step is involved; after writing a temporary file, an
  134.        external sort is called to process this temporary file into the
  135.        final output.
  136.  
  137.             But Yuck! does more than that:  if you are generating an old-
  138.        style pointlist (like the first example given), Yuck! will option-
  139.        ally include a prologue and an epilogue file, merge all nodes from
  140.        selected regions, zones, or nets into the output file, and gener-
  141.        ally make a nuisance of itself.
  142.  
  143.             What it boils down to is that a boss can generate a region or
  144.        zone list into which the various other nodes' pointlists are
  145.        already merged -- ideally suited to nearly-points who shy from
  146.        using a full nodelist.  It is also useful for people like Peter
  147.        Janssens (hi, Peter) who get a regularly updated FIDOUSER.LST-com-
  148.        patible file listing all the points in their region.
  149.  
  150.             Well, that's it, basically.  Yuck! adds a truckload of other
  151.        features, too.  FroDo, for example, likes to have either the real
  152.        phone number listed, or none at all.  This can be accomplished by
  153.        putting a special keyword in the control file.  Then, many people
  154.        list their own points in a file named FDPOINT.PVT.  In this file,
  155.        only node entries are allowed (no "Point" keyword), and FroDo
  156.        automagically treats the systems listed as points off your box.
  157.        My fakenet is 3210, for example, but I have my points listed in
  158.        FDPOINT.PVT.  To avoid a duplicate listing or to reduce the
  159.        pointlist's size, I can instruct Yuck! to remove my own fakenet
  160.        from the output file.  (On the other hand, I could just kill
  161.        FDPOINT.PVT and have FroDo get my point's data from the Yuck! out-
  162.        put file).
  163.  
  164.  
  165.  
  166.        Yuck! 2.00/a-1               02-10-90                       Page 4
  167.  
  168.             Additional goodies are that on request, Yuck! will auto-
  169.        magically determine the highest numbered input files (if you name
  170.        them something.###, ### being the day number); it is able to use
  171.        the input file's extension as the extension for the output file;
  172.        in the same fashion, it will, if not disabled by you, search for
  173.        the nodelist.### to use; and as final gimmick, it is able to
  174.        remove the input file(s) after processing.
  175.  
  176.             There is one additional feature which is only necessary in
  177.        very special situations; check appendix A if your entire net
  178.        shares one pointnet number, or if you actually have more than one
  179.        real net sharing one pointnet (jeeez!), or if it just interests
  180.        you.
  181.  
  182.             In the package you'll find a few example files; when looking
  183.        at them, keep in mind that I am 2:310/11.0, and that my pointnet
  184.        is 3210/xxx (to others only -- all my points run smart software).
  185.        Oh, a last one before I finish:  Yuck! will accept exactly ONE
  186.        command line argument, no switches or other fancy stuff.  The com-
  187.        mand line argument is the (optional) control file name; if not
  188.        specified, Yuck! looks for a default control file by the name of
  189.        YUCK.CTL.  I know that it doesn't have a lot of bells and whis-
  190.        tles, but for me it does the job.
  191.  
  192.             Oh, by the way, should you be interested in the type and syn-
  193.        tax of control file commands Yuck! accepts, see appendix D.
  194.  
  195.             Address inquiries to:
  196.  
  197.             Felix A. Kasza                 voice:  +43-222-804244011
  198.             p/a Computer/Laser-Systems     mail:   2:310/11.0
  199.             191, Hetzendorfer Strasse      fax:    +43-222-804244070
  200.             A-1130 Vienna, Austria
  201.  
  202.  
  203.  
  204.        Yuck! 2.00/a-1               02-10-90                       Page 5
  205.  
  206.                         Appendix A:  The Tim_Net Kludge
  207.  
  208.             In net 1:109, there is only one pointnet for all the
  209.        bossnodes.  This is the most crazy setup I ever saw in my entire
  210.        life, and I rather strongly felt it should be changed as soon as
  211.        possible.  After a bit of conversation with Tim Jasionowski, net
  212.        109's pointlist keeper, I have to admit that if nothing else, the
  213.        setup chosen there has at least an undeniable entertainment value.
  214.        OK, I thought I'd try to come up with something, and the result is
  215.        the new control file keyword "Tim_Net".  What does it do?  Simple:
  216.        A point in net 1:109 has a pointlist entry like this:
  217.  
  218.             ,1,System_name/BOSSNODE,...
  219.  
  220.             ... or maybe even like this:
  221.  
  222.             ,1,System_name:BOSSNET/BOSSNODE,...
  223.  
  224.             BOSSNODE is in this case the boss' node number, with BOSSNET
  225.        being the boss' net number.  Yes, you guessed it:  when tim_net is
  226.        enabled, the boss node number (or full address) will be taken from
  227.        the system name:  Yuck! looks for the last '/' resp. ':' and
  228.        interprets the rest as a system name.
  229.  
  230.             To use the Net_109 feature, adapt your YUCK.CTL so that it
  231.        will use the following parameters:
  232.  
  233.        ; ... usual filename etc. garbage ...
  234.        ; note NO kill statement
  235.        ; don't forget this one:
  236.        tim_net 109         ; this sets the default "real" net number to
  237.        use
  238.        tim_fake 30039 ; a fakenet to check for "/" and ':'
  239.        tim_fake 30040 ; another one
  240.        ; note:  "myZone" will be applied as the point's zone; 109 will be
  241.        ; used for all points with a name like "name/#"; others will have
  242.        ; to have a net number in the system name.  Only fakenets 30039
  243.        ; and 30040 will be eligible for un-kludging.
  244.  
  245.  
  246.  
  247.        Yuck! 2.00/a-1               02-10-90                       Page 6
  248.  
  249.                        Appendix B:  Licensing Information
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.                            Militantly Public Domain.
  260.  
  261.  
  262.  
  263.        Yuck! 2.00/a-1               02-10-90                       Page 7
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.                    (This page intentionally left non-blank.)
  278.  
  279.  
  280.  
  281.        Yuck! 2.00/a-1               02-10-90                       Page 8
  282.  
  283.               Appendix C:  Upgrade Instructions and Release Notes
  284.  
  285.  
  286.        WARNING: VERSION 2.00 MAY REQUIRE CONTROL FILE CHANGES IF
  287.        UPGRADING FROM 1.71 OR EARLIER.
  288.  
  289.        To upgrade from version 1.71, start here:
  290.           Remove the "maxpts" statement from yuck.ctl.  Yuck! 1.80
  291.           and up use a very different method for storing entries
  292.           internally, which is both faster and more stable.  As a
  293.           consequence, room for point entries is allocated as needed
  294.           (or until the available memory is used up).  Amiga users
  295.           may notice a slight decrease in the maximum number of
  296.           points the program can handle (on the order of 3.5%),
  297.           while MS-DOS Yuck! users should have slightly more room
  298.           available (some 13.3%).
  299.  
  300.        To upgrade from version 1.81, start here:
  301.           The Net_109 kludge has been completely reworked.  Please
  302.           check the descriptions for "tim_net" and "tim_fake" below.
  303.  
  304.        Version 2.00/b-2 release notes:
  305.           Sebastian Scala (2:316/4) pointed out a bug in the
  306.           "include net" logic.  Yuck! would not include the Zone
  307.           entry, thus appending included nets to the default zone in
  308.           case no intervening region was pulled in.  This error has,
  309.           of course, been rectified.  While I was at it, I also
  310.           decided not to strip Pvt, Hold or Down nodes from included
  311.           networks (or regions, or zones).
  312.  
  313.        Version 2.00/a-1 release notes:
  314.           A few major improvements were needed.  "Include" is now
  315.           able to include nets; "net_109" has been totally rewritten
  316.           and is now (in a greatly expanded version) available as
  317.           "tim_net" and "tim_fake".  "Include" now accepts an
  318.           optional "-h" flag after the zone/region/net number; if
  319.           present, only the header (up to the next
  320.           Zone/Region/Host/Hub keyword encountered during the
  321.           nodelist scan) is included.
  322.  
  323.        Version 1.81 release notes:
  324.           No changes compared to 1.80/d-2 except for the change in
  325.           the version number.  this release will be submitted to
  326.           SDS.  (Thanks to Rudi Van Vishout - his efforts are
  327.           greatly appreciated!)
  328.  
  329.        Version 1.80/d-2 release notes:
  330.           Fixed a potentially very serious bug noted and reported by
  331.           Max Hantsch (thanks!).  It had to do with uninitialized
  332.           array indices which shouldn't have been there in the first
  333.           place, and with brain damage on the author's end.
  334.  
  335.  
  336.  
  337.        Yuck! 2.00/a-1               02-10-90                       Page 9
  338.  
  339.        Version 1.80/d-1 release notes:
  340.           The maximum number of "map" statements in the control file
  341.           is now limited by available memory or 6552 items, whatever
  342.           is smaller.  Control file change: upgrade instructions for
  343.           versions prior to 1.71 have been removed.  If you are
  344.           using one of the pre-historic versions of Yuck!, well,
  345.           tough luck.
  346.  
  347.        Version 1.80 release notes:
  348.           Peter Janssens reported a serious bug which occurred when-
  349.           ever illegal entries (network 0) were fed to Yuck! and
  350.           more than 256 entries were read from the input files.
  351.           This bug is now fixed, and while I was at it, I converted
  352.           Yuck! to use singly linked lists internally.  Thanks to
  353.           johi for prodding me to rise above my laziness.  Thanks to
  354.           the new (finally dynamic) memory management, the "maxpts"
  355.           command is now obsolete.
  356.  
  357.        Version 1.71 release notes:
  358.           Removed my beautiful, fast, handcrafted nodelist scanner
  359.           from the distribution archive to reduce confusion.
  360.           Switched to zip format for the distribution archive.  Sub-
  361.           mitted YUCK_171.ZIP to Rudi Van Lishout for hatching into
  362.           SDS.
  363.  
  364.        Version 1.70 release notes:
  365.           Actually, this version adds no features at all.  It does,
  366.           however, feature an ultra-fast nodelist scanner, which
  367.           beats MsgTrack's to hell and gone.  Btw, MsgTrack only
  368.           scans the keyword and the node number, while mine parses
  369.           and stores the entire line ...
  370.  
  371.        Version 1.61 release notes:
  372.           Fixed a nasty mite in getLine().  While blank lines are
  373.           allowed in input files (and correctly caught, usually), a
  374.           line with only whitespace at its start was not.
  375.  
  376.        Version 1.60 release notes:
  377.           The amiga CLIST output format is now supported.  See
  378.           "clist" for details.  "Cronly", "lfonly" and "crlf" have
  379.           been expanded; they now accept "clist" as a valid argu-
  380.           ment.  CLIST format is now also supported for input files,
  381.           as is the fd199b format.  See "infd199b" and "infile" for
  382.           more information.
  383.  
  384.           Bug fixes:  line endings in "prolog" and "epilog" files
  385.           were not handled properly.  This is fixed.
  386.  
  387.           Minor improvement:  Yuck! now uses 2K file buffers.  This
  388.           should help the speed freaks out there.
  389.  
  390.  
  391.  
  392.        Yuck! 2.00/a-1               02-10-90                      Page 10
  393.  
  394.        Version 1.50 release notes:
  395.           This version was cleaned up somewhat and ported to the
  396.           Amiga by Max Hantsch and Martin Laubach.  Most of the
  397.           changes are internal; small model, for example, is no
  398.           longer supported.  My thanks go to Max and mjl for their
  399.           efforts, especially those directed towards getting me to
  400.           write better code.  In addition to all that internal work,
  401.           we added a new config verb, mainly for Amiga users - see
  402.           "lfonly", "cronly" and "crlf" below.  If you generate a
  403.           FIDOUSER.LST output file on an Amiga, do not use "$$$" in
  404.           the file name; the execute function will barf on that.
  405.           Another Amiga special:  clist supports pointnet entries
  406.           looking like ",3,->", where all the boss info is replaced
  407.           by the "->".  This directs clist to get the info from the
  408.           nodelist.  Since Yuck! always refers to the main nodelist
  409.           anyway, we decided to allow that syntax as well (in
  410.           "infile" files only).
  411.  
  412.           More notes on 1.50:
  413.  
  414.           This was the worst night I've had in a looong time.  Max
  415.           Hantsch & mjl, the Amiga guys, complained about a lot of
  416.           features; them people is getting more and more ungrateful
  417.           every week.  Anyway, the entire output file write logic
  418.           has been yanked and rewritten.   The main consequence is
  419.           that a long-standing bug is now gone; in "-a" mode with
  420.           included regions, the "Zone,..." entry for that or these
  421.           regions didn't get output.  Now I just want to know how
  422.           many new bugs I introduced with this rewrite :-(
  423.  
  424.        Version 1.43 release notes:
  425.           1.43 is the result of another suggestion from Stig Jacob-
  426.           sen (thanks, Stig).  An unspecified or empty system name
  427.           will now cause Yuck! to copy the sysop name field to the
  428.           system name entry when scanning a FIDOUSER.LST-style input
  429.           file.  In addition to that, Yuck! now shows information
  430.           about available memory when started; this should help
  431.           finding a decent "maxpts" value, and it satisfied my
  432.           curiosity.
  433.  
  434.        Version 1.42 release notes:
  435.           Thanks to Stig Jacobsen (2:231/16) for advising me of
  436.           problems with the FIDOUSER.LST-scanner.  Versions 1.41 and
  437.           below started scanning for an address at column 42; this
  438.           release begins at column 38.   Also, I had a serious bug
  439.           in there:  when no zone was specified in the file being
  440.           read as userlist, Yuck! did =not= insert the "myzone"
  441.           value from the control file.  This has been fixed.
  442.           Version 1.42 was released onto SDS (area SDSFRONT) as
  443.           YUCK_142.PAK.
  444.  
  445.  
  446.  
  447.        Yuck! 2.00/a-1               02-10-90                      Page 11
  448.  
  449.        Version 1.41 release notes:
  450.           If you enable "keeppvt", Yuck! will not kill "Pvt,..."
  451.           entries from a MakeNL-style input file.  See "keeppvt" for
  452.           more info.
  453.  
  454.        Version 1.40 release notes:
  455.           This release adds another output format, the FIDOUSER.LST
  456.           style.  See "userout", "sort" and "tempsort" below for
  457.           details.
  458.  
  459.        Version 1.33 release notes:
  460.           When I released 1.32, I thought I had "got it right now".
  461.           well, I'm used to being wrong.  Yuck! made a mess of
  462.           itself when the control file contained comment lines with
  463.           whitespace before the semicolon.  Only pure comment lines
  464.           created this problem, and only if there was whitespace
  465.           before the semicolon.  Needless to say, this has been
  466.           fixed.  Thanks to Alexander Holy (yes, that's his real
  467.           name) for pointing this one out to me.
  468.  
  469.        Version 1.32 release notes:
  470.           I think I got it right now.  The last one was really
  471.           braindamaged; I tried to resolve an unspecified input file
  472.           name to a fully-qualified filename with a numeric exten-
  473.           sion (for infile and userlist) even though only one of
  474.           them had been specified.  This positively sucks.  My
  475.           thanks to Andi Polz who pointed this out to me.  At the
  476.           same time, I expanded the include statement.  To include a
  477.           region, it now requires you to specify the zone ("include
  478.           region 2:31").  The zone inclusion syntax remains
  479.           unchanged ("include zone 2").
  480.  
  481.        Version 1.31 release notes:
  482.           Fixed a bloody bug.  When writing the "oldnet" list,
  483.           entries with "Host", "Hub", "Down" etc. keywords were
  484.           ignored, and their points didn't get written.  Note on the
  485.           nodelist scanner:  the nodelist scan during the oldnet
  486.           generation is stopped if there are no more points to be
  487.           written.  In other words, if you have points without a
  488.           bossnode in the nodelist, the entire nodelist will be
  489.           processed since Yuck! can't know whether the boss system
  490.           might be listed later (mainly for use with customized
  491.           nodelists, I need that for my private nets).
  492.  
  493.        Version 1.30 release notes:
  494.           Bug fix - "include"s were always executed, regardless of
  495.           whether "-a" was specified with "oldnet" or not.
  496.  
  497.  
  498.  
  499.        Yuck! 2.00/a-1               02-10-90                      Page 12
  500.  
  501.           New feature - "userlist [-k] fidouser.lst" will process a
  502.           file in the FIDOUSER.LST format as an input file.  This
  503.           may be in addition to or instead of a regular pointnet
  504.           input file.  Check out "userlist" below.  "Sysname" and
  505.           "sysloc" will set the system name and the location field
  506.           for points added from FIDOUSER.LST; defaults are "Some
  507.           point" and "Somewhere", respectively.  The baud rate and
  508.           flags defaults are hard coded in the source; see the
  509.           POINT* #defines.
  510.  
  511.  
  512.  
  513.        Yuck! 2.00/a-1               02-10-90                      Page 13
  514.  
  515.                        Appendix D:  Control File Commands
  516.  
  517.  
  518.        Note:
  519.           Data for non-point systems is =always= taken from the
  520.           nodelist.  If such data cannot be found, well, then you
  521.           have a problem.  To quote Joaquim H. Homrighausen, the
  522.           well-known author of the renowned FrontDoor idle process:
  523.           "Well, if you have THAT problem, well, tough luck!"
  524.  
  525.           Comments are allowed anywhere.  Blank lines are ignored;
  526.           trailing spaces are ignored; everything after a semicolon
  527.           is ignored.
  528.  
  529.                               INPUT FILE COMMANDS
  530.  
  531.        infile [-k] [path\]basename[.ext]                         OPTIONAL
  532.           Here you define the file to process.  If an explicit
  533.           extension is not present, the file having the highest-
  534.           numbered extension will be used.  The optional "-k"
  535.           removes the input file after successful processing.  Note:
  536.           Yuck! does not properly handle the case where you have
  537.           something like NODELIST.363 and NODELIST.005 in your
  538.           nodelist directory at the same time.  Then again, why
  539.           should =I= care?
  540.  
  541.           Additional note:  "infile" supports clist-style files,
  542.           where the info for non-point systems is replaced by a "-
  543.           >", implying a referral to the current nodelist.
  544.  
  545.        infd199b [-k] [path\]basename[.ext]                       OPTIONAL
  546.           This verb is provided for the convenience of those who
  547.           wish to merge an output file created in a prior Yuck! run
  548.           with other input files.  It does what its name says:  it
  549.           reads a pointnet file in FD-1.99b format.
  550.  
  551.        userlist [-k] [path\]basename[.ext]                       OPTIONAL
  552.           Basically, the same rules as for "infile" apply.  However,
  553.           the file to use is interpreted as a FIDOUSER.LST-style
  554.           text file.  You must have either an "infile" or a
  555.           "userlist" statement.
  556.  
  557.        nodelist [path\]basename[.ext]                           MANDATORY
  558.           This defines where the program will find your current
  559.           distribution (St. Louis format) nodelist.  It needs that
  560.           to pull in information about nodes.  Usually, you will not
  561.           specify an extension, and the highest-numbered
  562.           basename.NNN will automagically be selected.  Note:  be
  563.           careful at year's end.  If you have a NODELIST.363 and a
  564.           NODELIST.005 in your nodelist directory, it's your own
  565.           fault.
  566.  
  567.                              CONFIGURATION OPTIONS
  568.  
  569.  
  570.  
  571.        Yuck! 2.00/a-1               02-10-90                      Page 14
  572.  
  573.        unpublished {yes|no}                                      OPTIONAL
  574.           If set to no, point phone numbers will not be replaced
  575.           with the string "-Unpublished-".  Default is "yes".  Use
  576.           "no" only if all the phone numbers in the input file are
  577.           real ones (not the bosses'), or if any unknown ones
  578.           already read "-Unpublished-" in the input file.
  579.  
  580.        keeppvt {yes|no}                                          OPTIONAL
  581.           If set to yes, point entries marked "Pvt,..." are not
  582.           killed when a MakeNL-style input file ("infile") is
  583.           processed.  The default is to remove such entries
  584.           ("keeppvt no").
  585.  
  586.        zone <your_zone>                                          OPTIONAL
  587.           The corresponding Zone entry from the highest numbered
  588.           nodelist will be inserted at the start of the resulting
  589.           file.  No Zone entry will be created if there already is
  590.           one in the input file.  The "zone" setting is also used to
  591.           determine certain other defaults.
  592.  
  593.        sysname Desired system name                               OPTIONAL
  594.           By default, Yuck! will, when scanning a FIDOUSER.LST-style
  595.           file, set the system name field to the sysop's name.  This
  596.           can be overridden with the "sysname" command.  Specifying
  597.           no parameter to this entry tells Yuck! to use the default
  598.           (the sysop name).
  599.  
  600.        sysloc Desired location                                   OPTIONAL
  601.           Overrides the "Somewhere" default for the location field
  602.           for any points read in from a "userlist".
  603.  
  604.        tempsort [path\]tempname[.ext]                            OPTIONAL
  605.           The name of the temporary file for a "userout" list.
  606.           Yuck! will create this file and then use an external sort
  607.           to generate the final output file.  If no extension is
  608.           present, the current nodelist's one is appended.  If no
  609.           "tempsort" at all is specified, a default of
  610.           "yucktemp.$$$" will be used.  The "tempsort" name is what
  611.           gets substituted into the sort sommand line instead of the
  612.           string "{in}".  Obliging guy I am, right?
  613.  
  614.           *** Note for Amiga users ***
  615.  
  616.           The "tempsort" filename will default to "Yuck!.temp" in
  617.           Amiga mode.
  618.  
  619.        maxpts #of_pts_expected                   PLEASE DELETE - OBSOLETE
  620.  
  621.  
  622.  
  623.        Yuck! 2.00/a-1               02-10-90                      Page 15
  624.  
  625.                                PROCESSING OPTIONS
  626.  
  627.        kill <your_pointnet>                                      OPTIONAL
  628.           FrontDoor users usually keep their own pointnet in a
  629.           separate file, called FDPOINT.PVT.  If their pointnet is
  630.           duplicated in the input file, this statement will allow
  631.           them to remove their own pointnet from the output file.
  632.           This statement may occur several times.
  633.  
  634.           Note:  if you run a pointlist in the FD 1.99b format (see
  635.           "fd199b" keyword below), you will =not= want to kill your
  636.           pointnet, or you'll have no points anymore.
  637.  
  638.        map <pointnet> <bossnode>                                 OPTIONAL
  639.           This is the real meat of the program.  If a Host entry
  640.           with a  matching net number is found in the input file,
  641.           the real node's data is pulled from the highest-numbered
  642.           nodelist and inserted into the output, and the program
  643.           starts converting plain node entries to Point lines, until
  644.           another keyword with a higher rank than Hub is
  645.           encountered.
  646.  
  647.           New:  the number of map statements, limited to 32 in pre-
  648.           1.80/d-1 versions, is now unlimited.  Implementation-
  649.           dependent maxima may be present.  For the MS-DOS version,
  650.           that's 6552 map items or available memory, whichever you
  651.           run out of first.
  652.  
  653.        net_109                                                   OBSOLETE
  654.           See "tim_net" and "tim_fake" below.
  655.  
  656.        include ["-h"] {"zone"|"region"|"net"} number   MULTIPLE, OPTIONAL
  657.           If you create a pointnet file with oldnet and want an
  658.           entire net, region or zone included (to allow points to
  659.           run without a full nodelist), this one is for you.  It is
  660.           *required* if you use the "-a" option with "oldnet" but
  661.           may appear more than once.  Any "include" statement will
  662.           be ignored if you do not have an "oldnet -a" in your
  663.           control file.  The 'number' mentioned above is either a
  664.           zone number ("include zone ..."), a zone- and a region
  665.           number ("include region ..."), or a zone- and network
  666.           number ("include net ...").  Examples:  "include zone 1"
  667.           or "include region 2:48" or "include net 2:313".  The "-h"
  668.           flag, if present, directs Yuck! only to include entries up
  669.           to the next zone, region, host or hub entry encountered in
  670.           the nodelist.  That might be useful to generate a small
  671.           nodelist which still contains zonegates, regional inbound
  672.           gates etc.
  673.  
  674.  
  675.  
  676.        Yuck! 2.00/a-1               02-10-90                      Page 16
  677.  
  678.        userkill z:n/f                                  MULTIPLE, OPTIONAL
  679.           Sometimes, when including a file in the FIDOUSER.LST-
  680.           format, you will want to remove the points of certain
  681.           bossnodes from the output.  That's what "userkill" does:
  682.           any points of that bossnode will not be processed.
  683.           Useable for removing your own points which you might
  684.           already have listed elsewhere (FDPOINT.PVT comes to mind).
  685.           Effectively, "userkill" does the same for FIDOUSER.LST-
  686.           style input files that "killnet" does for MakeNL-style
  687.           files.
  688.  
  689.        tim_fake fakenet                                MULTIPLE, OPTIONAL
  690.           This keyword is required if you also use the tim_net verb.
  691.           It sorta registers fakenet numbers for later special
  692.           processing, as described in appendix A.  See also
  693.           "tim_net" below.
  694.  
  695.        tim_net netnumber                                         OPTIONAL
  696.           This keyword replaces the old net_109 kludge.  It is
  697.           intended for pointlists where multiple bossnodes share a
  698.           common pointnet.  When you activate this feature, all
  699.           fakenets are examined against the list of netnumbers
  700.           specified in "tim_fake" statements.  If a match is made,
  701.           the point's system name is examined for a match to either
  702.           "somename/#" or "somename:#/#", where "#" stands for any
  703.           sequence of decimal digits evaluating to less than 64K.
  704.           If this step also produces a hit, the entry under
  705.           consideration is checked further:  if it is of the form
  706.           listed first ("somename/#"), it is remapped to
  707.           myzone:netnumber/#.point with "myzone" coming from the
  708.           "zone" statement, "netnumber" from the "tim_net" line, and
  709.           "#" from the system name.  If, on the other hand, the
  710.           system name is alike to "name:#/#", the new address will
  711.           be myzone:#/#.point, with "#/#" being taken from the
  712.           system name.
  713.  
  714.  
  715.        tim_trim {yes|no}                                         OPTIONAL
  716.           If you use Yuck! to parse point system names (see tim_net
  717.           and tim_fake above), Yuck! will by default remove the
  718.           address info from the end of the system name.  Use
  719.           "tim_trim no" to avoid this.
  720.  
  721.                               OUTPUT FILE COMMANDS
  722.  
  723.        fd199b [path\]targname[.ext]                              OPTIONAL
  724.           FrontDoor 1.99b and up support a different pointnet
  725.           format, which is also capable of supporting multiple
  726.           bossnodes.  The old format is, of course, still supported.
  727.           The new format looks like this:
  728.  
  729.  
  730.  
  731.        Yuck! 2.00/a-1               02-10-90                      Page 17
  732.  
  733.           Boss,3:632/308
  734.           ,1,JoHo's_Turf,<...>
  735.           Boss,26:1305/100
  736.           ,1,JoHo's_Turf,<...>
  737.           Boss,7:48/20
  738.           ,1,JoHo's_Turf,<...>
  739.  
  740.           Note the absence of Zone, Region and Host keywords and the
  741.           full address of the boss nodes.  FroDo will automagically
  742.           pull required info from the main nodelist when it's
  743.           needed.  One of the main advantages of this format is that
  744.           you avoid duplicate boss node entries in your compiled
  745.           nodelist.  While this was no problem with the old format
  746.           (since the boss' info was pulled from the main nodelist
  747.           anyway), it was pretty crufty.  Regarding the output file
  748.           name, check out "oldnet" below.
  749.  
  750.        oldnet [-a] [path\]targname[.ext]                         OPTIONAL
  751.           This verb sets the output file name and path.  If you
  752.           don't specify an extension, it will be taken from the
  753.           input file name; that's the way to go if you want a
  754.           daynumber-extension for the output file.  If there is a
  755.           dot in the targname, the extension is not modified in any
  756.           way.  If you include the "-a" option, then the entire
  757.           range specified by an "include" statement will be placed
  758.           into the output file.  Ideally suited to points - the boss
  759.           generates a regional list and robots it to those among his
  760.           points who do not want to run a full nodelist.
  761.  
  762.        clist [path\]basename[.ext]                               OPTIONAL
  763.           This basically generates an oldnet-style output file.
  764.           However, it does =not= perform a nodelist scan.  Rather,
  765.           it will replace all info for nodes which the Amiga CLIST
  766.           nodelist compiler will find in the current nodelist (Zone,
  767.           Host, Node) with the string "->" (as in "Host,310,->").
  768.           "Clist" does not know about "include"d zones/regions or
  769.           about the "-a" flag; the contents of its output file will
  770.           offer the same amount of information that can be found in
  771.           a list of the "fd199b" type.
  772.  
  773.        userout [-a] [path\]basename[.ext]                        OPTIONAL
  774.           This command generates a file in the well-known
  775.           FIDOUSER.LST format.  This file, by default, contains
  776.           =only= points and is intended to be used as a secondary
  777.           pointlist in, say, msged.  If you include the "-a" switch,
  778.           it behaves similarly to the "oldnet" command, i.e., it
  779.           includes the sysop names of the selected or included
  780.           regions and zones.  "Userout" requires an external sort to
  781.           work; see the "sort" sommand for additional information.
  782.  
  783.  
  784.  
  785.        Yuck! 2.00/a-1               02-10-90                      Page 18
  786.  
  787.        sort command line for sort {in} {out}                     OPTIONAL
  788.           "Sort" is only required if you want to generate a
  789.           FIDOUSER.LST style output file with the "userout" command.
  790.           In that case, Yuck! requires an external sort to rearrange
  791.           the lines in alphabetical order.  Ben Baker's "qsort" pro-
  792.           gram will do nicely, and in the absence of a "sort" state-
  793.           ment, Yuck! will default to it.  What happens when Yuck!
  794.           tries to generate the output file is actually quite
  795.           simple:  a temporary file, unsorted, is generated.  Any
  796.           file having the final output file name is then deleted to
  797.           avoid any trouble ("file already exists" etc.).  Then, the
  798.           literal strings "{in}" and  "{out}" in the command line
  799.           are substituted by the temporary and final file names,
  800.           respectively.  The sort program is then executed, and upon
  801.           return to Yuck!, the existence of the final output file is
  802.           checked.  If it's missing, Yuck! reports an error.  The
  803.           temporary file is then deleted, and we're done.  The
  804.           default command line is "qsort {in} {out}", by the way.
  805.           This requires QSORT.EXE to be in the search path.  You may
  806.           also call a batch file to do the dirty work; in this case,
  807.           you =must= provide a command line similar to this one:
  808.           "command /c mybatch {in} {out}".
  809.  
  810.           ***  Note for Amiga users  ***
  811.  
  812.           The default command to invoke the external sort is changed
  813.           for the AMIGA version: "sort {in} {out}".
  814.  
  815.                               OUTPUT FILE OPTIONS
  816.  
  817.        lfonly {fd199b|oldnet|userout|clist}            MULTIPLE, OPTIONAL
  818.        cronly {fd199b|oldnet|userout|clist}            MULTIPLE, OPTIONAL
  819.        crlf {fd199b|oldnet|userout|clist}              MULTIPLE, OPTIONAL
  820.           By default, all of Yuck's output file lines are terminated
  821.           with a CR/LF (carriage return/line feed) sequence.
  822.           Especially in Amiga environments, this seems to be
  823.           undesirable at times.  These three config options let you
  824.           tailor Yuck!'s output to your specific needs.  If you
  825.           wanted, e. g., the oldnet-style output file lines to be
  826.           terminated with line feeds only, you'd put something like
  827.           "lfonly oldnet" into yuck.ctl.  The default for all four
  828.           output file formats is to terminate lines with both a
  829.           carriage return and a line feed.  Note:  when reading
  830.           input files, carriage returns are ignored, and lines are
  831.           assumed to end with a line feed character.
  832.  
  833.        prolog prolog.ext                                         OPTIONAL
  834.           If used in the control file, the entire contents of the
  835.           specified file will be inserted into the output file(s),
  836.           just below the fixed header giving the version number of
  837.           Yuck! used to create the file.  In theory, nothing unto-
  838.           ward should occur if the prolog file can't be opened, but
  839.           you know, enithink that kan go wronk wil go wronk.
  840.  
  841.  
  842.  
  843.        Yuck! 2.00/a-1               02-10-90                      Page 19
  844.  
  845.        epilog epilog.ext                                         OPTIONAL
  846.           If used in the control file, the entire contents of the
  847.           specified file will be inserted into the output file(s)
  848.           after all the other junk Yuck! will write to them.  If the
  849.           epilog file doesn't exist, one of two things might happen:
  850.           a) nothing, that's what I intended or b) anything, which
  851.           is just tough luck.